Parallelization of programs for the current multi-core processors poses a challenge. In existing approaches, multi-core processors incorporate a few to few dozen processing cores, and each core simultaneously executes multiple software threads. As such, the number of threads executing simultaneously on a processor chip is already significant, and this number promises to increase exponentially as the number of transistors on chip scale up (for example, according to Moore's Law).
Additionally, existing approaches include aspect-oriented programming (AOP). In existing AOP approaches, a program is modularized into several “aspects,” but these aspects are not designed for parallel implementation. Aspects in traditional AOP execute code (for example, called “advices”) before, after, or around (that is, to control) a breakpoint, but not in parallel with the main thread.